/**
 * TipoErro - Listagem de tipo_erros
 */
TipoErroLista = Ext.extend(Bt.grid.GridPanel,{
	
	//Config Options {
	
	 	 title		: 'Lista de tipos de erro'
		,editable	: true
		,rowEditor	: true
		,actions	: {
			visualize: false
		}
		
	//}
	
	//Initialize {
	
		,initComponent: function()
		{
			this.store = new Ext.data.DirectStore({
				 idProperty	: 'cd_tipo_erro'
				,autoLoad	: true
				,autoDestroy: true
				,directFn	: Server.TipoErro.List
				,fields	: [
					 {name: 'cd_tipo_erro'	, type: 'int'	}
					,{name: 'ds_descricao'	, type: 'string'}
				]
			});
			
			Ext.apply(this,{
				tbar:[{
					 text	: 'Novo tipo de erro'
					,iconCls: 'ico_add'
					,handler: this._onBtnAddClick
					,scope	: this
				}]
				,columns: [{
					 header		: 'Nr.'					
					,dataIndex	: 'cd_tipo_erro'
					,align		: 'center'
					,width		: 60
				},{
					 header		: 'Descri&#231;&#227;o'	
					,dataIndex	: 'ds_descricao'
					,width		: 300
					,editor		: {
						 xtype		: 'textfield'
						,maxLength	: 200
						,allowBlank	: false
					}		
				}]
			});
				
			TipoErroLista.superclass.initComponent.call(this);
		}	
		
	//}
	
	//Override {
		
		,onEditClick: function(grid, record, rowIndex)
		{
			this.rowEditor.startEditing(rowIndex,false);	
		}
		
		,onRemoveClick: function(me, record, rowIndex)
		{
			Ext.Msg.confirm('Confirma&#231;&#227;o','Deseja excluir este registro?',function(opt)
			{
				if(opt === 'no'){
					return false;
				}
				
 				Server.TipoErro.Delete(record.id,function(result)
				{
					if(result && result.success)
					{
						record.store.remove(record);
					}
				});
				
			},this);
		}
		
		,onRowEditorAfterEdit: function(rowEditor, changes, record, rowIndex)
		{
			var cd_tipo_erro = record.get('cd_tipo_erro');
			
			this.el.setLoading(true,{text: cd_tipo_erro ? 'Alterando tipo de erro...' : 'Inserindo tipo de erro...'});
			
			Server.TipoErro.Create(record.data,function()
			{
				this.store.reload();
					
			},this);
			
			this.el.setLoading(false);
			this.store.reload();
		}
		
		,onRowEditorHide: function()
		{	
			var i = this.store.findBy(function(r){ return r.phantom; });
			if(i !== -1){
				this.store.remove(this.store.getAt(i));
			}
		}
		
	//}
	
	//Listeners{
				
		,_onBtnAddClick: function()
		{
			var r = new this.store.recordType({
				 cd_tipo_erro: 0
				,ds_descricao: ''
			},0);
			
			this.rowEditor.stopEditing();
			this.store.insert(0, r);
            this.getView().refresh();
            this.getSelectionModel().selectRow(0);
         	this.rowEditor.startEditing(0);
		}
		
	//}
	
});